#ifndef SCORE_H
#define SCORE_H
#include <iostream>
#include <vector>
#include <map>

#define cl_test_type unsigned int

typedef struct {
    double value;
    int weight;
} cl_test_score;

typedef struct {
    double referenceValue;
    unsigned long referenceScore;
} cl_reference_info;

typedef  std::map<cl_test_type, cl_test_score> test_score_map;
class CLScorePrivate;
class CLScore
{
public:
    CLScore();
    ~CLScore();
    void registerWeight(cl_test_type type,
                        double referenceValue,
                        unsigned long referenceScore);
    void setTesterScore(cl_test_type type, float value, int weight);
    const test_score_map &testScore() const;
    const unsigned long totalScore() const;
private:
    CLScorePrivate *d_ptr;
};

#endif
